﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SIMCObjetoNegocio;
using SIMCPresenter;

public partial class Administracion_ModificarFiltro : System.Web.UI.Page, IModificarFiltrosView
{
    private ModificarFiltrosPresenter m_Presenter;
    public event EventHandler<EventArgs> BuscarPerfilesAsociados;
    public event EventHandler<EventArgs> ActualizarFiltro;
    public event EventHandler<EventArgs> AsociarPerfiles;

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        m_Presenter = new ModificarFiltrosPresenter(this);
    }
   
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BuscarPerfilesAsociados(null, null);
        }
    }

    protected void btnModificarFiltro_Click(object sender, EventArgs e)
    {
        tblModificarFiltro.Visible = true;
        tblGuardarFiltro.Visible = true;
        tblDescripcionFiltro.Visible = false;               
    }

    protected void btnGuardarFiltro_Click(object sender, EventArgs e)
    {   
        tblModificarFiltro.Visible = false;
        tblGuardarFiltro.Visible = false;
        tblDescripcionFiltro.Visible = true;

        ActualizarFiltro(null, null);      
    }

    protected void btnCancelarFiltro_Click(object sender, EventArgs e)
    {
        tblModificarFiltro.Visible = false;
        tblGuardarFiltro.Visible = false;
        tblDescripcionFiltro.Visible = true;        
    }

    protected void btnAsociarPerfil_Click(object sender, EventArgs e)
    {
        AsociarPerfiles(null, null);
    }

    protected void btnCancelarAsociacion_Click(object sender, EventArgs e)
    {
        BuscarPerfilesAsociados(null, null);
    }

    public int FiltroSeleccionado
    {
        get
        {
            if (Request.QueryString["idFiltro"] != null)
            {                
                return (Convert.ToInt32(Request.QueryString["idFiltro"].ToString()));
            }

            return 0;
        }
    }

    public FiltroPortafolio MostrarFiltro
    {
        set
        {

            txtDescripcion.Text = value.Descripcion;
            txtQuery.Text = value.Query;
            lblDescripcion.Text = value.Descripcion;
            lblQuery.Text = value.Query;

        }
    }

    public FiltroPortafolio ObtenerFiltro
    {
        get
        {
            return new FiltroPortafolio
            {
                Id = FiltroSeleccionado,
                Descripcion = txtDescripcion.Text,
                Query = txtQuery.Text
            };        
        }
    }

   
    public List<Rol> SeleccionarPerfiles
    {
        set {

            foreach (ListItem CurrentItem in cblPerfiles.Items)
            {
                for (int i = 0; i < value.Count; i++)
                {
                    if (value[i].Id == CurrentItem.Value)
                    {
                        CurrentItem.Selected = true;
                    }

                }
            }           
        }
    }

    public List<Rol> MostarPerfiles
    {
        set
        {

            cblPerfiles.DataTextField = "Descripcion";
            cblPerfiles.DataValueField = "Id";
            cblPerfiles.DataSource = value;
            cblPerfiles.DataBind();
        }
    }

    public List<string> PerfilesSeleccionados
    {
        get
        {
            List<string> Perfiles = new List<string>();

            foreach (ListItem CurrentItem in cblPerfiles.Items)
            {
                if (CurrentItem.Selected)
                {
                    Perfiles.Add(CurrentItem.Value);
                }
            }

            return Perfiles;
        }
    }

    public void MostrarMensaje(string p_Mensaje, bool p_Exito)
    {
        lblMensaje.Text = p_Mensaje;
        lblMensaje.ForeColor = p_Exito ? System.Drawing.Color.Green : System.Drawing.Color.Red;
    }
}